// utils/download.js
import {
  message
} from 'antd';

/**
 * 下载 blob 数据为文件
 * @param {Blob} blobData - blob 数据
 * @param {string} filename - 文件名
 * @param {string} fileType - 文件类型，如 'application/pdf'
 */
export const downloadBlob = (blobData, filename, fileType = '') => {
  try {
    // 如果提供了文件类型，创建指定类型的 Blob
    const blob = fileType ? new Blob([blobData], {
      type: fileType
    }) : blobData;

    // 创建下载链接
    const downloadUrl = window.URL.createObjectURL(blob);
    const link = document.createElement('a');
    link.href = downloadUrl;
    link.download = filename;

    // 触发下载
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);

    // 释放 URL 对象
    window.URL.revokeObjectURL(downloadUrl);

    message.success('文件下载成功');
    return true;
  } catch (error) {
    console.error('下载失败:', error);
    message.error('文件下载失败');
    return false;
  }
};

/**
 * 将字符串数组转换为 {label: 值, value: 值} 的对象数组
 * @param {string[]} list - 字符串数组
 * @returns {Array<{label: string, value: string}>} 对象数组
 */
export function listToOptions(list) {
  if (!Array.isArray(list)) {
    return [];
  }

  return list.map(item => ({
    label: item,
    value: item
  }));
}

export function extractAllParams(str) {
  const params = {};
  const paramMatches = str.match(/(\w+)=([^\/\/]+)/g);
  
  if (paramMatches) {
    paramMatches.forEach(match => {
      const [key, value] = match.split('=');
      params[key] = value;
    });
  }
  
  return params;
}